﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Poligas_ERP.Classes;
using ModeloDesenvolvimento;

/*ESCRITO DIA 21/12/2011*/
namespace Poligas_ERP.Forms
{
    public partial class FrmFornecedores : Form
    {
        Fornecedores fornecedor = new Fornecedores();
        DataTable dtFornecedor = new DataTable();
        DataTable dtRetorno = new DataTable();
        int idFornecedor = 0;

        Util util = new Util();


        public FrmFornecedores()
        {
            InitializeComponent();
        }

        private void FrmFornecedores_Load(object sender, EventArgs e)
        {
            dgvFornecedores.AutoGenerateColumns = false;
            HabilitarControlesIniciais(true);
            LimparCampos();
            LocalizarDados();
            txtPesquisar.Focus();
            LocalizarDados();
        }
        private void FrmFornecedores_KeyPress(object sender, KeyPressEventArgs e)
        {
            if(e.KeyChar == (char)13)
            {
                e.Handled = true;
            }
        }
        private void FrmFornecedores_KeyDown(object sender, KeyEventArgs e)
        {
            if(e.KeyCode == Keys.Return)
            {
                SendKeys.Send("{TAB}");
            }
        }
        private void dgvFornecedores_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            if(dgvFornecedores.CurrentRow != null)
                RecuperarDadosPorCodigo();
        }
        private void txtPesquisar_TextChanged(object sender, EventArgs e)
        {
            LocalizarDados();
        }

        private void LocalizarDados()
        {
            dgvFornecedores.DataSource = fornecedor.LocalizarDados(txtPesquisar.Text);

            btnEditar.Enabled = dgvFornecedores.Rows.Count > 0;
            btnExcluir.Enabled = btnEditar.Enabled;
            
            RecuperarDadosPorCodigo();

        }
        private void RecuperarDadosPorCodigo()
        {
            if(dgvFornecedores.CurrentRow != null)
            {
                Int32 CodFornecedor = Convert.ToInt32(dgvFornecedores.SelectedRows[0].Cells[0].Value);
                dtRetorno = fornecedor.RecuperarDadosPorCodigo(CodFornecedor);

                if(dtRetorno.Rows.Count > 0)
                {
                    idFornecedor = Convert.ToInt32(dtRetorno.Rows[0]["CodFor"]);
                    txtCodigo.Text = Convert.ToString(idFornecedor);
                    txtNome.Text = dtRetorno.Rows[0]["Nome"].ToString();
                    txtFantasia.Text = dtRetorno.Rows[0]["Fantasia"].ToString();
                    txtEndereco.Text = dtRetorno.Rows[0]["Endereco"].ToString();
                    txtCpfCnpj.Text = dtRetorno.Rows[0]["CpfCnpj"].ToString();
                    txtRgIe.Text = dtRetorno.Rows[0]["InsEstRg"].ToString();
                    txtCompl.Text = dtRetorno.Rows[0]["Compl"].ToString();
                    txtBairro.Text = dtRetorno.Rows[0]["Bairro"].ToString();
                    txtCidade.Text = dtRetorno.Rows[0]["Cidade"].ToString();
                    txtEstado.Text = dtRetorno.Rows[0]["Estado"].ToString();
                    txtCep.Text = dtRetorno.Rows[0]["Cep"].ToString();
                    txtTelefone.Text = dtRetorno.Rows[0]["Telefone"].ToString();
                    txtFax.Text = dtRetorno.Rows[0]["Fax"].ToString();
                    txtEmail.Text = dtRetorno.Rows[0]["Email"].ToString();
                    txtRamo.Text = dtRetorno.Rows[0]["Ramo"].ToString();
                    txtContato.Text = dtRetorno.Rows[0]["Vendedor"].ToString();
                    txtFaturamento.Text = dtRetorno.Rows[0]["CondFatur"].ToString();
                    txtObservacoes.Text = dtRetorno.Rows[0]["Observacoes"].ToString();
                }
            }
            dtRetorno = null;
        }
        private void LimparCampos()
        {
            txtCodigo.Clear();
            txtNome.Clear();
            txtFantasia.Clear();
            txtEndereco.Clear();
            txtCpfCnpj.Clear();
            txtRgIe.Clear();
            txtCompl.Clear();
            txtBairro.Clear();
            txtCidade.Clear();
            txtEstado.Clear();
            txtCep.Clear();
            txtTelefone.Clear();
            txtFax.Clear();
            txtEmail.Clear();
            txtRamo.Clear();
            txtContato.Clear();
            txtFaturamento.Clear();
            txtObservacoes.Clear();
        }
        private void HabilitarControlesIniciais(bool status)
        {
            gbxGrid.Enabled = status;
            gbxCadastros.Enabled = !status;
            HabilitarBotoes(status);
        }
        private void HabilitarBotoes(bool status)
        {
            btnNovo.Enabled = status;
            btnEditar.Enabled = status;
            btnExcluir.Enabled = status;
            btnGravar.Enabled = !status;
            btnCancelar.Enabled = !status;
        }

        private void btnNovo_Click(object sender, EventArgs e)
        {
            LimparCampos();
            tbCadastros.SelectedTab = tbCadastroBasico;
            HabilitarControlesIniciais(false);
            txtNome.Focus();
        }
        private void btnEditar_Click(object sender, EventArgs e)
        {
            tbCadastros.SelectedTab = tbCadastroBasico;
            HabilitarControlesIniciais(false);
            txtNome.Focus();
        }
        private void btnGravar_Click(object sender, EventArgs e)
        {
            if(string.IsNullOrEmpty(txtCodigo.Text.Trim()))
            {
                if(fornecedor.Inserir(txtNome.Text, txtFantasia.Text, txtEndereco.Text, txtCompl.Text,
                    txtBairro.Text, txtCidade.Text, txtEstado.Text, txtCep.Text, txtCpfCnpj.Text,
                    txtRgIe.Text, txtTelefone.Text, txtFax.Text, txtEmail.Text, txtRamo.Text, txtContato.Text,
                    txtFaturamento.Text, txtObservacoes.Text)==false)
                {
                    util.Aviso("Registro Incluido com Sucesso");
                }
                else
                {
                    util.Aviso("Erro ao Gravar Registro");
                }
            }

            else
            {
                Int32 CodFor = Convert.ToInt32(dgvFornecedores.SelectedRows[0].Cells[0].Value);

                if(fornecedor.Atualizar(CodFor, txtNome.Text, txtFantasia.Text, txtEndereco.Text, txtCompl.Text,
                    txtBairro.Text, txtCidade.Text, txtEstado.Text, txtCep.Text, txtCpfCnpj.Text,
                    txtRgIe.Text, txtTelefone.Text, txtFax.Text, txtEmail.Text, txtRamo.Text, txtContato.Text,
                    txtFaturamento.Text, txtObservacoes.Text)==false)
                {
                    util.Aviso("Registro Atualizado com Sucesso");
                }
                else
                {
                    util.Aviso("Erro ao Gravar Registro");
                }

            }
            HabilitarControlesIniciais(true);
            LimparCampos();
            LocalizarDados();
        }
        private void btnExcluir_Click(object sender, EventArgs e)
        {
            string pergunta = "Deseja Excluir o Registro?";

            if(idFornecedor <= 0)
            {
                util.Aviso("Selecione um arquivo para Exclusão");
                return;
            }
            if(util.Decide(pergunta, true))
            {
                Int32 CodForn = Convert.ToInt32(dgvFornecedores.SelectedRows[0].Cells[0].Value);

                if(fornecedor.Excluir(CodForn))
                    util.Aviso("Arquivo Excluido com Sucesso");
                else
                    util.Aviso("Erro ao Excluir");
            }
            LimparCampos();
            LocalizarDados();
        }
        private void btnCancelar_Click(object sender, EventArgs e)
        {
            LimparCampos();
            HabilitarControlesIniciais(true);
            LocalizarDados();
        }



    }
}
